//
//  UIImage+UIImage.h
//  AFNetworking
//
//  Created by 张xin-鑫 on 2019/6/9.
//

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (Extension)
/**
  *根据当前图像，和指定的尺寸，生成圆角图像并且返回
  * 
  */
- (void)cornerImageWithSize:(CGSize)size fillColor:(UIColor *)fillColor completed:(void (^)(UIImage *image))completed;
//图片旋转角度
-(UIImage*)rotateImageWithDegree:(CGFloat)degree;
//更改图片填充色
- (UIImage *)imageWithColor:(UIColor *)color;

/**
 * 返回一张圆形图片
 */
- (instancetype)circleImage;

/**
 * 返回一张圆形图片
 */
+ (instancetype)circleImageNamed:(NSString *)name;

/**
 *  返回一张自由拉伸的图片
 */
+ (UIImage *)resizedImageWithName:(NSString *)name;
+ (UIImage *)resizedImageWithName:(NSString *)name left:(CGFloat)left top:(CGFloat)top;

/**
 *  返回一张纯颜色的图片
 */
+ (UIImage *)imageWithColor:(UIColor *)color andImageWidth:(CGFloat)width andImageHeight:(CGFloat)height;

// 根据颜色生成一张尺寸为1*1的相同颜色图片
+ (UIImage *)imageWithColor:(UIColor *)color;

/**
 *  返回一张截取部分图片并生成新图片
 */
+ (UIImage *)imageFromImage:(UIImage *)image inRect:(CGRect)rect;

/**
 *  拼接图片
 */
+ (UIImage *)composeImg:(CGSize)refSize andPictures:(NSArray<UIImage *>*)pics andColums:(NSInteger)c;
/**
 *  生成一张带有边框的圆形图片
 *
 *  @param borderW     边框宽度
 *  @param borderColor 边框颜色
 *  @param image       要添加边框的图片
 *
 *  @return 生成的带有边框的圆形图片
 */
+ (UIImage *)imageWithBorder:(CGFloat)borderW color:(UIColor *)borderColor image:(UIImage *)image;

/**
 *  图片不要渲染
 *
 *  @param name 图片名字
 *
 *  @return 返回一张不要渲染的图片
 */
+ (UIImage *)imageWithRenderOriginalName:(NSString *)name;

/**
 图片压缩
 
 @param image image
 @param scaleSize 比例
 @return 图片
 */
+ (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize;

/**
带圆角左右颜色渐变,用于背景色

 @param colors 渐变数组,必须为颜色.cgcolor
  @param frame 用于渐变的位置
 @return 返回渐变颜色的图片
 
 */

+ (UIImage *)imageForOtherColor:(NSArray<UIColor*>*)colors andFrame:(CGRect)frame;
/**
 带圆角左右颜色渐变,用于背景色外带层layer
 
 @param colors 渐变数组,必须为颜色.cgcolor
 @param frame 用于渐变的位置
 @return 返回渐变颜色的图片
 
 */
+ (UIImage *)imageForOtherColor:(NSArray<UIColor*>*)colors andFrame:(CGRect)frame andOtherLayer:(CALayer*)layer andRadius:(NSInteger)radius;
/**
 根据宽度获取高度
 
 @param image 图片
 @param width 固定的宽度
 @return 高度值
 */
-(CGFloat)getImageHeightWithImage:(UIImage*)image andWidth:(CGFloat)width;
/**
 根据高度获取宽度
 
 @param image 图片
 @param height 固定的高度
 @return 宽度值
 */
-(CGFloat)getImageWidthWithImage:(UIImage *)image andHeight:(CGFloat)height;

/// 根据视图生成图片
/// @param view 视图
+ (UIImage*) imageWithUIView:(UIView*) view;
/// 生成二维码
/// @param targetString 二维码内容
/// @param logoImage 图片(可为空)
+(UIImage *)createQRCodeWithTargetString:(NSString *)targetString logoImage:(UIImage *)logoImage;
@end

NS_ASSUME_NONNULL_END
